[IA64] Disable more privify code
authorAlex Williamson <alex.williamson@hp.com>
Mon, 4 Jun 2007 20:00:35 +0000 (14:00 -0600)
committerAlex Williamson <alex.williamson@hp.com>
Mon, 4 Jun 2007 20:00:35 +0000 (14:00 -0600)
Conditionally comment two privify code blocks.

Signed-off-by: Tristan Gingold <tgingold@free.fr>
xen/arch/ia64/xen/ivt.S
xen/arch/ia64/xen/privop.c

index 448689e27fe6dbca7c470cfeb52840b47a9d7594..5439d5d2f266e8d2f73245d971e0e8049386f1e0 100644 (file)
@@ -587,9 +587,13 @@ ENTRY(break_fault)
        ;;
        ld8 r18=[r18]    
        ;;
-       cmp.eq p7,p0=r0,r17                     // is this a psuedo-cover?
+#ifdef CONFIG_PRIVIFY
+       // pseudo-cover are replaced by break.b which (unfortunatly) always
+       // clear iim.
+       cmp.eq p7,p0=r0,r17
 (p7)   br.spnt.many dispatch_privop_fault
        ;;
+#endif
        // if (ipsr.cpl == 2 && (iim - HYPERPRIVOP_START) < HYPERPRIVOP_MAX)
        // this is a hyperprivop. A hyperprivop is hand-coded assembly with
        // psr.ic off which means it can make no calls, cannot use r1-r15,
index 1ee423b44ba8ef3d2681e7c0b6f42f8e4166211f..559c3e44ea1eeff28661d353c68116e57209f08d 100644 (file)
@@ -702,7 +702,7 @@ static IA64FAULT priv_handle_op(VCPU * vcpu, REGS * regs, int privlvl)
                        perfc_incr(bsw1);
                        return priv_bsw1(vcpu, inst);
                }
-               if (inst.B8.x6 == 0x0) {
+               if (privify_en && inst.B8.x6 == 0x0) {
                        // break instr for privified cover
                        perfc_incr(cover);
                        return priv_cover(vcpu, inst);